package com.iot.protocol.iec104.server.slave;

import com.iot.protocol.iec104.common.BasicInstruction104;
import com.iot.protocol.iec104.message.MessageDetail;
import com.iot.protocol.iec104.server.handler.ChannelHandler;
import com.iot.protocol.iec104.server.handler.DataHandler;
import lombok.extern.slf4j.Slf4j;

import java.util.Timer;
import java.util.TimerTask;


@Slf4j
public class SysDataHandler implements DataHandler {
	private Timer timer;
	@Override
	public void handlerAdded(ChannelHandler ctx) throws Exception {
//		ctx.writeAndFlush(BasicInstruction104.getGeneralCallReplyDetail104());
		//         创建一个新的定时器对象
		this.timer = new Timer();

		// 创建一个任务（需要在指定时间后执行）
		TimerTask task = new TimerTask() {
			@Override
			public void run() {
//				System.out.println("定时器触发了！");
//                更改下面这行
				ctx.writeAndFlush(BasicInstruction104.getGeneralCallEndDetail104());
			}
		};
		// 设置定时器任务的开始时间为1000ms之后，并且每隔2000ms重复执行一次
		long delay = 1000; // 初始延迟时间
		long period = 2000; // 重复周期
		this.timer.scheduleAtFixedRate(task, delay, period);
	}


	@Override
	public void handlerEnd(ChannelHandler ctx) throws Exception {
		this.timer.cancel();
	}

	@Override
	public void channelRead(ChannelHandler ctx, MessageDetail Detail104) throws Exception {
//		log.info("收到的报文：" + Detail104.toString());
	}

}
